home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text.html;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.Shape;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
- import javax.swing.JEditorPane;
- import javax.swing.JScrollPane;
- import javax.swing.JViewport;
- import javax.swing.border.Border;
- import javax.swing.event.DocumentEvent;
- import javax.swing.event.HyperlinkEvent;
- import javax.swing.event.HyperlinkListener;
- import javax.swing.event.HyperlinkEvent.EventType;
- import javax.swing.text.AttributeSet;
- import javax.swing.text.ComponentView;
- import javax.swing.text.Element;
- import javax.swing.text.JTextComponent;
- import javax.swing.text.View;
- import javax.swing.text.ViewFactory;
- import javax.swing.text.html.HTML.Attribute;
-
- class FrameView extends ComponentView implements HyperlinkListener {
- JEditorPane htmlPane;
- JScrollPane scroller;
- boolean editable;
- float width;
- float height;
- URL src;
-
- public FrameView(Element var1) {
- super(var1);
- }
-
- public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- Element var4 = ((View)this).getElement();
- AttributeSet var5 = var4.getAttributes();
- URL var6 = this.src;
- String var7 = (String)var5.getAttribute(Attribute.SRC);
- URL var8 = ((HTMLDocument)var4.getDocument()).getBase();
-
- try {
- this.src = new URL(var8, var7);
- if (var6.equals(this.src)) {
- return;
- }
-
- this.htmlPane.setPage(this.src);
- HTMLDocument var9 = (HTMLDocument)this.htmlPane.getDocument();
- var9.setFrameDocumentState(true);
- } catch (MalformedURLException var10) {
- } catch (IOException var11) {
- }
-
- }
-
- protected Component createComponent() {
- Element var1 = ((View)this).getElement();
- AttributeSet var2 = var1.getAttributes();
- String var3 = (String)var2.getAttribute(Attribute.SRC);
- if (var3 != null && !var3.equals("")) {
- try {
- URL var4 = ((HTMLDocument)var1.getDocument()).getBase();
- this.src = new URL(var4, var3);
- this.htmlPane = new JEditorPane(this.src);
- this.htmlPane.addHyperlinkListener(this);
- this.htmlPane.setEditable(this.editable);
- HTMLDocument var5 = (HTMLDocument)this.htmlPane.getDocument();
- var5.setFrameDocumentState(true);
- this.setMargin();
- this.createScrollPane();
- this.setBorder();
- } catch (MalformedURLException var6) {
- ((Throwable)var6).printStackTrace();
- } catch (IOException var7) {
- ((Throwable)var7).printStackTrace();
- }
- }
-
- return this.scroller;
- }
-
- private void createScrollPane() {
- AttributeSet var1 = ((View)this).getElement().getAttributes();
- String var2 = (String)var1.getAttribute(Attribute.SCROLLING);
- if (var2 == null) {
- var2 = "auto";
- }
-
- if (!var2.equals("no")) {
- if (var2.equals("yes")) {
- this.scroller = new JScrollPane(22, 32);
- } else {
- this.scroller = new JScrollPane();
- }
- } else {
- this.scroller = new JScrollPane(21, 31);
- }
-
- JViewport var3 = this.scroller.getViewport();
- ((Container)var3).add(this.htmlPane);
- var3.setBackingStoreEnabled(true);
- this.scroller.setVisible(false);
- this.scroller.setMinimumSize(new Dimension(5, 5));
- this.scroller.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
- }
-
- public float getMaximumSpan(int var1) {
- return (float)Integer.MAX_VALUE;
- }
-
- public float getMinimumSpan(int var1) {
- return 5.0F;
- }
-
- private JEditorPane getOutermostJEditorPane() {
- View var1 = ((View)this).getParent();
-
- FrameSetView var2;
- for(var2 = null; var1 != null; var1 = var1.getParent()) {
- if (var1 instanceof FrameSetView) {
- var2 = (FrameSetView)var1;
- }
- }
-
- if (var2 != null) {
- return (JEditorPane)((View)var2).getContainer();
- } else {
- return null;
- }
- }
-
- public void hyperlinkUpdate(HyperlinkEvent var1) {
- if (var1 instanceof HTMLFrameHyperlinkEvent) {
- HTMLFrameHyperlinkEvent var2 = (HTMLFrameHyperlinkEvent)var1;
- if (((HyperlinkEvent)var2).getEventType() == EventType.ACTIVATED) {
- JEditorPane var3 = this.getOutermostJEditorPane();
- String var4 = var2.getTarget();
- if (var2.getTarget().equals("_parent") && !this.inNestedFrameSet()) {
- var4 = "_top";
- }
-
- if (var3 != null && !((JTextComponent)var3).isEditable()) {
- var3.fireHyperlinkUpdate(new HTMLFrameHyperlinkEvent(var3, ((HyperlinkEvent)var2).getEventType(), ((HyperlinkEvent)var2).getURL(), ((HyperlinkEvent)var2).getDescription(), ((View)this).getElement(), var4));
- if (var4.equals("_top")) {
- try {
- var3.setPage(((HyperlinkEvent)var2).getURL());
- } catch (IOException var5) {
- }
- }
- }
- }
-
- }
- }
-
- private boolean inNestedFrameSet() {
- FrameSetView var1 = (FrameSetView)((View)this).getParent();
- return ((View)var1).getParent() instanceof FrameSetView;
- }
-
- public void paint(Graphics var1, Shape var2) {
- Container var3 = ((View)this).getContainer();
- if (var3 != null && this.htmlPane != null && this.htmlPane.isEditable() != ((JTextComponent)var3).isEditable()) {
- this.editable = ((JTextComponent)var3).isEditable();
- this.htmlPane.setEditable(this.editable);
- }
-
- super.paint(var1, var2);
- }
-
- private void setBorder() {
- AttributeSet var1 = ((View)this).getElement().getAttributes();
- String var2 = (String)var1.getAttribute(Attribute.FRAMEBORDER);
- if (var2 != null && (var2.equals("no") || var2.equals("0"))) {
- this.scroller.setBorder((Border)null);
- }
-
- }
-
- private void setMargin() {
- int var1 = 0;
- Insets var2 = this.htmlPane.getMargin();
- Insets var3 = new Insets(var2.top, var2.left, var2.right, var2.bottom);
- boolean var4 = false;
- AttributeSet var5 = ((View)this).getElement().getAttributes();
- String var6 = (String)var5.getAttribute(Attribute.MARGINWIDTH);
- if (var6 != null) {
- var1 = Integer.parseInt(var6);
- if (var1 > 0) {
- var3.left = var1;
- var3.right = var1;
- var4 = true;
- }
- }
-
- var6 = (String)var5.getAttribute(Attribute.MARGINHEIGHT);
- if (var6 != null) {
- var1 = Integer.parseInt(var6);
- if (var1 > 0) {
- var3.top = var1;
- var3.bottom = var1;
- var4 = true;
- }
- }
-
- if (var4) {
- this.htmlPane.setMargin(var3);
- }
-
- }
-
- public void setParent(View var1) {
- if (var1 != null) {
- JTextComponent var2 = (JTextComponent)var1.getContainer();
- this.editable = var2.isEditable();
- }
-
- super.setParent(var1);
- }
- }
-